home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- #
- # Copyright 1993, 1994, 1995, 1996, 1997,
- # 1998, 1999 Patrick Volkerding, Moorhead, MN USA
- # Copyright 2001 Slackware Linux, Inc., Concord, CA USA
- # All rights reserved.
- #
- # Redistribution and use of this script, with or without modification, is
- # permitted provided that the following conditions are met:
- #
- # 1. Redistributions of this script must retain the above copyright
- # notice, this list of conditions and the following disclaimer.
- #
- # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- #
-
- # Wed, 27 Apr 1994 00:06:50 -0700 (PDT)
- # Optimization by David Hinds.
-
- SOURCE_DIR=/var/log/mount
- ASK="tagfiles"
- if [ -L /bin/chmod -a -L /bin/chown ]; then # probably on the bootdisk using busybox
- TARGET_DIR=/mnt
- TMP=/mnt/var/log/setup/tmp
- if mount | grep "on /mnt" 1> /dev/null 2>&1 ; then # good
- true
- else # bad
- echo
- echo
- echo "You can't run pkgtool from the rootdisk until you've mounted your Linux"
- echo "partitions beneath /mnt. Here are some examples of this:"
- echo
- echo "If your root partition is /dev/hda1, and is using ext2fs, you would type:"
- echo "mount /dev/hda1 /mnt -t ext2"
- echo
- echo "Then, supposing your /usr partition is /dev/hda2, you must do this:"
- echo "mount /dev/hda2 /mnt/usr -t ext2"
- echo
- echo "Please mount your Linux partitions and then run pkgtool again."
- echo
- exit
- fi
- else
- TARGET_DIR=/
- TMP=/var/log/setup/tmp
- fi
- if [ ! -d $TMP ]; then
- mkdir -p $TMP
- chmod 700 $TMP
- fi
- ADM_DIR=$TARGET_DIR/var/log
- LOG=$TMP/PKGTOOL.REMOVED
-
- # remove whitespace
- crunch() {
- while read FOO ; do
- echo $FOO
- done
- }
-
- package_name() {
- STRING=`basename $1 .tgz`
- # Check for old style package name with one segment:
- if [ "`echo $STRING | cut -f 1 -d -`" = "`echo $STRING | cut -f 2 -d -`" ]; then
- echo $STRING
- else # has more than one dash delimited segment
- # Count number of segments:
- INDEX=1
- while [ ! "`echo $STRING | cut -f $INDEX -d -`" = "" ]; do
- INDEX=`expr $INDEX + 1`
- done
- INDEX=`expr $INDEX - 1` # don't include the null value
- # If we don't have four segments, return the old-style (or out of spec) package name:
- if [ "$INDEX" = "2" -o "$INDEX" = "3" ]; then
- echo $STRING
- else # we have four or more segments, so we'll consider this a new-style name:
- NAME=`expr $INDEX - 3`
- NAME="`echo $STRING | cut -f 1-$NAME -d -`"
- echo $NAME
- # cruft for later ;)
- #VER=`expr $INDEX - 2`
- #VER="`echo $STRING | cut -f $VER -d -`"
- #ARCH=`expr $INDEX - 1`
- #ARCH="`echo $STRING | cut -f $ARCH -d -`"
- #BUILD="`echo $STRING | cut -f $INDEX -d -`"
- fi
- fi
- }
-
- remove_packages() {
- for pkg_name in $*
- do
- if [ -r $ADM_DIR/packages/$pkg_name ]; then
- dialog --title "PACKAGE REMOVAL IN PROGRESS" --cr-wrap --infobox \
- "\nRemoving package $pkg_name.\n\
- \n\
- Since each file must be checked \
- against the contents of every other installed package to avoid wiping out \
- areas of overlap, this process can take quite some time. If you'd like to \
- watch the progress, flip over to another virtual console and type:\n\
- \n\
- tail -f $TMP/PKGTOOL.REMOVED\n" 13 60
- export ROOT=$TARGET_DIR
- removepkg $pkg_name >> $LOG 2> /dev/null
- else
- echo "No such package: $pkg_name. Can't remove." >> $LOG
- fi
- done
- }
-
- # Here, we read the list of arguments passed to the pkgtool script.
- if [ $# -gt 0 ]; then # there are arguments to the command
- while [ $# -gt 0 ]; do
- case "$1" in
- "-sets")
- DISK_SETS=`echo $2 | tr "[A-Z]" "[a-z]"` ; shift 2 ;;
- "-source_mounted")
- SOURCE_MOUNTED="always" ; shift 1 ;;
- "-ignore_tagfiles")
- ASK="never" ; shift 1 ;;
- "-tagfile")
- USETAG=$2 ; shift 2 ;;
- "-source_dir")
- SOURCE_DIR=$2 ; shift 2 ;;
- "-target_dir")
- TARGET_DIR=$2
- ADM_DIR=$TARGET_DIR/var/log
- shift 2 ;;
- "-source_device")
- SOURCE_DEVICE=$2 ; shift 2 ;;
- esac
- done
- else # there were no arguments, so we'll get the needed information from the
- # user and then go on.
- CMD_START="true"
- rm -f $TMP/SeT*
- while [ 0 ]; do
- dialog --title "Slackware Package Tool (pkgtool version 9.0.0)" \
- --menu "\nWelcome to the Slackware package tool.\n\
- \nWhich option would you like?\n" 17 75 7 \
- "Current" "Install packages from the current directory" \
- "Other" "Install packages from some other directory" \
- "Floppy" "Install packages from floppy disks" \
- "Remove" "Remove packages that are currently installed" \
- "View" "View the list of files contained in a package" \
- "Setup" "Choose Slackware installation scripts to run again" \
- "Exit" "Exit Pkgtool" 2> $TMP/reply
- if [ ! $? = 0 ]; then
- rm -f $TMP/reply
- dialog --clear
- exit
- fi
- REPLY="`cat $TMP/reply`"
- rm -f $TMP/reply
- if [ "$REPLY" = "Exit" ]; then
- dialog --clear
- exit
- fi
- if [ "$REPLY" = "Setup" ]; then
- echo 'dialog --title "SELECT SYSTEM SETUP SCRIPTS" --item-help --checklist \
- "Please use the spacebar to select the setup scripts to run. Hit enter when you \
- are done selecting to run the scripts." 17 70 9 \' > $TMP/setupscr
- for script in $ADM_DIR/setup/setup.* ; do
- BLURB=`grep '#BLURB' $script | cut -b8-`
- if [ "$BLURB" = "" ]; then
- BLURB="\"\""
- fi
- echo " \"`basename $script | cut -f2- -d .`\" $BLURB \"no\" $BLURB \\" >> $TMP/setupscr
- done
- echo "2> $TMP/return" >> $TMP/setupscr
- . $TMP/setupscr
- if [ ! "`cat $TMP/return`" = "" ]; then
- # Run each script:
- for script in `cat $TMP/return` ; do
- scrpath=$ADM_DIR/setup/setup.`echo $script | tr -d \"`
- rootdevice="`mount | head -n 1 | cut -f 1 -d ' '`"
- ( COLOR=on ; cd $TARGET_DIR ; . $scrpath / $rootdevice )
- done
- fi
- rm -f $TMP/return $TMP/setupscr
- continue
- fi # end Setup
- if [ "$REPLY" = "View" ]; then
- DEFITEM=""
- export DEFITEM
- dialog --title "SCANNING" --infobox "Please wait while \
- Pkgtool scans your system to determine which packages you have \
- installed and prepares a list for you." 0 0
- echo 'dialog $DEFITEM --item-help --menu "Please select the package you wish to view." 17 68 10 \' > $TMP/viewscr
- for name in `ls $ADM_DIR/packages` ; do
- pkg_name=`package_name $name`
- BLURB="`sed -n \"/$pkg_name:/{s/\\"//g;p;q;}\" $ADM_DIR/packages/$name | cut -f 2- -d : | crunch`"
- # Let's have some backward compatibility with the interim beta (for now):
- if [ "$BLURB" = "" ]; then
- BLURB="`sed -n \"/$name:/{s/\\"//g;p;q;}\" $ADM_DIR/packages/$name | cut -f 2- -d : | crunch`"
- fi
- echo " \"$name\" \"$BLURB\" \"View information about package $name\" \\" >> $TMP/viewscr
- done
- echo "2> $TMP/return" >> $TMP/viewscr
- while [ 0 ]; do
- . $TMP/viewscr
- if [ ! "`cat $TMP/return`" = "" ]; then
- DEFITEM="--default-item `cat $TMP/return`"
- dialog --title "CONTENTS OF PACKAGE: `cat $TMP/return`" --no-shadow --textbox "$ADM_DIR/packages/`cat $TMP/return`" \
- 0 0 2> /dev/null
- else
- break
- fi
- done
- rm -f $TMP/return $TMP/viewscr $TMP/tmpmsg
- # This will clean up after most defective packages:
- chmod 755 /
- chmod 1777 /tmp
- continue
- fi
- if [ "$REPLY" = "Remove" ]; then
- dialog --title "SCANNING" --infobox "Please wait while Pkgtool scans \
- your system to determine which packages you have installed and prepares \
- a list for you." 0 0
- # end section
- cat << EOF > $TMP/rmscript
- dialog --title "SELECT PACKAGES TO REMOVE" --item-help --checklist \
- "Please select the \
- packages you wish to Remove. Use the \
- spacebar to select packages to delete, and the UP/DOWN arrow keys to \
- scroll up and down through the entire list." 20 75 11 \\
- EOF
- for name in `ls $ADM_DIR/packages` ; do
- pkg_name=`package_name $name`
- BLURB="`sed -n \"/$pkg_name:/{s/\\"//g;p;q;}\" $ADM_DIR/packages/$name | cut -f 2- -d : | crunch`"
- # Let's have some backward compatibility with the interim beta (for now):
- if [ "$BLURB" = "" ]; then
- BLURB="`sed -n \"/$name:/{s/\\"//g;p;q;}\" $ADM_DIR/packages/$name | cut -f 2- -d : | crunch`"
- fi
- echo " \"$name\" \"$BLURB\" off \"Select/Unselect removing package $name\" \\" >> $TMP/rmscript
- done
- echo "2> $TMP/return" >> $TMP/rmscript
- if [ -L $LOG -o -r $LOG ]; then
- rm -f $LOG
- fi
- cat /dev/null > $LOG
- chmod 600 $LOG
- chmod 700 $TMP/rmscript
- export ADM_DIR;
- $TMP/rmscript
- remove_packages `cat $TMP/return | tr -d "\042"`
- if [ "`cat $TMP/PKGTOOL.REMOVED`" = "" ]; then
- rm -f $TMP/PKGTOOL.REMOVED
- dialog --title "NO PACKAGES REMOVED" --msgbox "Hit OK to return \
- to the main menu." 5 40
- else
- dialog --title "PACKAGE REMOVAL COMPLETE" --msgbox "The packages have \
- been removed. A complete log of the files that were removed has been created \
- in $TMP: PKGTOOL.REMOVED." 0 0
- fi
- rm -f $TMP/rmscript $TMP/return $TMP/tmpmsg $TMP/SeT*
- chmod 755 /
- chmod 1777 /tmp
- # No, return to the main menu:
- # exit
- elif [ "$REPLY" = "Floppy" ]; then
- dialog --title "SELECT FLOPPY DRIVE" --menu "Which floppy drive would \
- you like to install from?" \
- 11 70 4 \
- "/dev/fd0u1440" "1.44 MB first floppy drive" \
- "/dev/fd1u1440" "1.44 MB second floppy drive" \
- "/dev/fd0h1200" "1.2 MB first floppy drive" \
- "/dev/fd1h1200" "1.2 MB second floppy drive" 2> $TMP/wdrive
- if [ $? = 1 ]; then
- dialog --clear
- exit
- fi
- SOURCE_DEVICE="`cat $TMP/wdrive`"
- rm -f $TMP/wdrive
- cat << EOF > $TMP/tmpmsg
-
- Enter the names of any disk sets you would like to install.
- Separate the sets with a space, like this: a b oi x
-
- To install packages from one disk, hit [enter] without typing
- anything.
-
- EOF
- dialog --title "SOFTWARE SELECTION" --inputbox "`cat $TMP/tmpmsg`" 13 70 2> $TMP/sets
- DISK_SETS="`cat $TMP/sets`"
- rm -f $TMP/sets
- if [ "$DISK_SETS" = "" ]; then
- DISK_SETS="disk"
- else
- DISK_SETS=`echo $DISK_SETS | sed 's/ /#/g'`
- DISK_SETS="#$DISK_SETS"
- fi
- break;
- elif [ "$REPLY" = "Other" ]; then
- dialog --title "SELECT SOURCE DIRECTORY" --inputbox "Please enter the name of the directory that you wish to \
- install packages from:" 10 50 2> $TMP/pkgdir
- if [ $? = 1 ]; then
- rm -f $TMP/pkgdir $TMP/SeT*
- dialog --clear
- exit
- fi
- SOURCE_DIR="`cat $TMP/pkgdir`"
- SOURCE_MOUNTED="always"
- DISK_SETS="disk"
- chmod 755 $TARGET_DIR
- chmod 1777 $TARGET_DIR/tmp
- rm -f $TMP/pkgdir
- if [ ! -d $SOURCE_DIR ]; then
- dialog --title "DIRECTORY NOT FOUND" --msgbox "The directory you want to \
- install from ($SOURCE_DIR) \
- does not seem to exist. Please check the directory and then try again." \
- 10 50
- dialog --clear
- exit
- fi
- break;
- else # installing from current directory
- SOURCE_MOUNTED="always"
- SOURCE_DIR="$PWD"
- DISK_SETS="disk"
- chmod 755 $TARGET_DIR
- chmod 1777 $TARGET_DIR/tmp
- break;
- fi
- done
- fi
- if [ "$DISK_SETS" = "disk" ]; then
- ASK="always"
- fi
-
- mount_the_source() {
- # is the source supposed to be mounted already?
- if [ "$SOURCE_MOUNTED" = "always" ]; then
- # The source should already be mounted, so we test it
- if [ ! -d $SOURCE_DIR ]; then # the directory is missing
- cat << EOF > $TMP/tmpmsg
-
- Your source device cannot be accessed properly.
-
- Please be sure that it is mounted on $SOURCE_DIR,
- and that the Slackware disks are found in subdirectories
- of $SOURCE_DIR like specified.
-
- EOF
- dialog --title "MOUNT ERROR" --msgbox "`cat $TMP/tmpmsg`" 11 67
- rm -f $TMP/tmpmsg
- exit 1;
- fi
- return 0;
- fi
- dialog --title "INSERT DISK" --menu "Please insert disk $1 and \
- press ENTER to continue." \
- 11 50 3 \
- "Continue" "Continue with the installation" \
- "Skip" "Skip the current disk series" \
- "Quit" "Abort the installation process" 2> $TMP/reply
- if [ ! $? = 0 ]; then
- REPLY="Quit"
- else
- REPLY="`cat $TMP/reply`"
- fi
- rm -f $TMP/reply
- if [ "$REPLY" = "Skip" ]; then
- return 1;
- fi
- if [ "$REPLY" = "Quit" ]; then
- dialog --title "ABORTING" --msgbox "Aborting software installation." 5 50
- chmod 755 $TARGET_DIR
- chmod 1777 $TARGET_DIR/tmp
- exit 1;
- fi;
- # Old line:
- # mount -r -t msdos $SOURCE_DEVICE $SOURCE_DIR
- # New ones: (thanks to Andy Schwierskott!)
- go_on=y
- not_successfull_mounted=1
- while [ "$go_on" = y -a "$not_successfull_mounted" = 1 ]; do
- mount -r -t msdos $SOURCE_DEVICE $SOURCE_DIR
- not_successfull_mounted=$?
- if [ "$not_successfull_mounted" = 1 ]; then
- mount_answer=x
- while [ "$mount_answer" != "y" -a "$mount_answer" != "q" ] ; do
- dialog --title "MOUNT PROBLEM" --menu "Media was not successfully \
- mounted! Do you want to \
- retry, or quit?" 10 60 2 \
- "Yes" "Try to mount the disk again" \
- "No" "No, abort." 2> $TMP/mntans
- mount_answer="`cat $TMP/mntans`"
- rm -f $TMP/mntans
- if [ "$mount_answer" = "Yes" ]; then
- mount_answer="y"
- else
- mount_answer="q"
- fi
- done
- go_on=$mount_answer
- fi
- done
- test $not_successfull_mounted = 0
- }
-
- umount_the_source() {
- if [ ! "$SOURCE_MOUNTED" = "always" ]; then
- umount $SOURCE_DEVICE 1> /dev/null 2>&1
- fi;
- }
-
- install_disk() {
- mount_the_source $1
- if [ $? = 1 ]; then
- umount_the_source;
- return 1;
- fi
- CURRENT_DISK_NAME="$1"
- PACKAGE_DIR=$SOURCE_DIR
- if [ "$SOURCE_MOUNTED" = "always" -a ! "$DISK_SETS" = "disk" ]; then
- PACKAGE_DIR=$PACKAGE_DIR/$1
- fi
-
- # If this directory is missing or contains no *.tgz files, bail.
- if [ ! -d $PACKAGE_DIR ]; then
- return 1
- fi
- if ls $PACKAGE_DIR/*.tgz 1> /dev/null 2> /dev/null ; then
- true
- else
- return 1
- fi
-
- #
- # look for tagfile for this series and copy into $TMP/tagfile
- #
- touch $TMP/tagfile
- if [ ! "$DISK_SETS" = "disk" ]; then
- if [ -r $TMP/SeTtagext ]; then
- if [ -r $PACKAGE_DIR/tagfile`cat $TMP/SeTtagext` ]; then
- cat $PACKAGE_DIR/tagfile`cat $TMP/SeTtagext` >> $TMP/tagfile
- else
- if [ -r $PACKAGE_DIR/tagfile ]; then
- cat $PACKAGE_DIR/tagfile >> $TMP/tagfile
- fi
- fi
-
- #
- # Do we need to follow a custom path to the tagfiles?
- #
- elif [ -r $TMP/SeTtagpath ]; then
- custom_path=`cat $TMP/SeTtagpath`
- short_path=`basename $PACKAGE_DIR`
-
- # If tagfile exists at the specified custom path, copy it over.
- if [ -r $custom_path/$short_path/tagfile ]; then
- cat $custom_path/$short_path/tagfile >> $TMP/tagfile
-
- else # well, I guess we'll use the default one then.
- if [ -r $PACKAGE_DIR/tagfile ]; then
- cat $PACKAGE_DIR/tagfile >> $TMP/tagfile
- fi
- fi
- #
- # We seem to be testing for this too often... maybe this code should
- # be optimized a little...
- #
- elif [ -r $PACKAGE_DIR/tagfile ]; then
- cat $PACKAGE_DIR/tagfile >> $TMP/tagfile
- fi
-
- #
- # Execute menus if in QUICK mode:
- #
- if [ -r $TMP/SeTQUICK -a -r $PACKAGE_DIR/maketag ]; then
- if [ ! "$MAKETAG" = "" -a -r $PACKAGE_DIR/$MAKETAG ]; then # use alternate maketag
- sh $PACKAGE_DIR/$MAKETAG
- else
- sh $PACKAGE_DIR/maketag
- fi
- if [ -r $TMP/SeTnewtag ]; then
- mv $TMP/SeTnewtag $TMP/tagfile
- fi
- fi
-
- #
- # Protect tagfile from hacker attack:
- #
- if [ -r $TMP/tagfile ]; then
- chmod 600 $TMP/tagfile
- fi
-
- fi # ! "$DISK_SETS" = "disk"
-
- # It's possible that the tagfile was specified on the command line. If that's
- # the case, then we'll just override whatever we figured out up above.
- if [ ! "$USETAG" = "" ]; then
- cat $USETAG > $TMP/tagfile
- fi
-
- # If there's a catalog file present, use it to check for missing files.
- # If not, forget about that and install whatever's there.
- if [ "$1" = "single_disk" -o -r $PACKAGE_DIR/disk$1 -o -r $PACKAGE_DIR/package-list.txt ]; then
- if [ -r $PACKAGE_DIR/package-list.txt ]; then
- CATALOG_FILE=$PACKAGE_DIR/package-list.txt
- else
- CATALOG_FILE=`basename $PACKAGE_DIR/disk*`;
- fi
- if [ -r $PACKAGE_DIR/$CATALOG_FILE -a ! -d $PACKAGE_DIR/$CATALOG_FILE ]; then
- if grep CONTENTS: $PACKAGE_DIR/$CATALOG_FILE 1> /dev/null 2>&1 ; then
- # First we check for missing packages...
- for PKGTEST in `grep "^CONTENTS:" $PACKAGE_DIR/$CATALOG_FILE | cut -f2- -d : 2> /dev/null` ; do
- # This is not a perfect test. (say emacs is missing but emacs-nox is not)
- if ls $PACKAGE_DIR/$PKGTEST*.tgz 1> /dev/null 2> /dev/null ; then # found something like it
- true
- else
- cat << EOF > $TMP/tmpmsg
-
- WARNING!!!
-
- While looking through your index file ($CATALOG_FILE),
- I noticed that you might be missing a package:
-
- $PKGTEST-\*-\*-\*.tgz
-
- that is supposed to be on this disk (disk $1). You may go
- on with the installation if you wish, but if this is a
- crucial file I'm making no promises that your machine will
- boot.
-
- EOF
- dialog --title "FILE MISSING FROM YOUR DISK" --msgbox \
- "`cat $TMP/tmpmsg`" 17 67
- fi
- done # checking for missing packages
- # Now we test for extra packages:
- ALLOWED="`grep CONTENTS: $PACKAGE_DIR/$CATALOG_FILE | cut -b10- 2> /dev/null`"
- for PACKAGE_FILENAME in $PACKAGE_DIR/*.tgz; do
- BASE="`basename $PACKAGE_FILENAME .tgz`"
- BASE="`package_name $BASE`"
- if echo $ALLOWED | grep $BASE 1> /dev/null 2>&1 ; then
- true
- else
- cat << EOF > $TMP/tmpmsg
-
- WARNING!!!
-
- While looking through your index file ($CATALOG_FILE),
- I noticed that you have this extra package:
-
- ($BASE.tgz)
-
- that I don't recognize. Please be sure this package is
- really supposed to be here, and is not left over from an
- old version of Slackware. Sometimes this can happen at the
- archive sites.
-
- EOF
- dialog --title "EXTRA FILE FOUND ON YOUR DISK" \
- --msgbox "`cat $TMP/tmpmsg`" 17 67
- rm -f $TMP/tmpmsg
- fi
- done
- fi
- fi
- fi # check for missing/extra packages
-
- # Install the packages:
- for PACKAGE_FILENAME in $PACKAGE_DIR/*.tgz; do
- if [ "$PACKAGE_FILENAME" = "$PACKAGE_DIR/*.tgz" ]; then
- continue;
- fi
- if [ "$ASK" = "never" ]; then # install the package
- installpkg -root $TARGET_DIR -infobox -tagfile $TMP/tagfile $PACKAGE_FILENAME
- ERROR=$?
- elif [ "$ASK" = "tagfiles" ]; then
- installpkg -root $TARGET_DIR -menu -tagfile $TMP/tagfile $PACKAGE_FILENAME
- ERROR=$?
- else # ASK should be = always here, and that's how we'll treat it
- installpkg -root $TARGET_DIR -menu -ask -tagfile $TMP/tagfile $PACKAGE_FILENAME
- ERROR=$?
- fi
- # Check for abort:
- if [ "$ERROR" = "99" ]; then
- umount_the_source;
- chmod 755 $TARGET_DIR
- chmod 1777 $TARGET_DIR/tmp
- exit 1;
- fi
- # Present a warning if an error is found:
- if [ ! "$ERROR" = "0" ]; then
- dialog --timeout 600 --title "installpkg error #$ERROR" --msgbox "There was a fatal \
- error attempting to install $PACKAGE_FILENAME. The package may be corrupt, \
- the installation media may be bad, or something else has caused the package \
- to be unable to be read without error. You may hit enter to continue if you wish, \
- but if this is an important required package then your \
- installation may not work as-is." 11 70
- fi
- done
- OUTTAHERE="false"
- if [ -r $PACKAGE_DIR/install.end ]; then
- OUTTAHERE="true"
- fi
- umount_the_source;
- if [ "$OUTTAHERE" = "true" ]; then
- return 1;
- fi
- }
-
- install_disk_set() { # accepts one argument: the series name in lowercase.
- SERIES_NAME=$1
- CURRENT_DISK_NUMBER="1";
- while [ 0 ]; do
- # Don't start numbering the directories until 2:
- if [ $CURRENT_DISK_NUMBER = 1 ]; then
- DISKTOINSTALL=$SERIES_NAME
- else
- DISKTOINSTALL=$SERIES_NAME$CURRENT_DISK_NUMBER
- fi
- install_disk $DISKTOINSTALL
- if [ ! $? = 0 ]; then # install.end was found, or the user chose
- # to quit installing packages.
- return 0;
- fi
- CURRENT_DISK_NUMBER=`expr $CURRENT_DISK_NUMBER + 1`
- done;
- }
-
- # /* main() */ ;)
- if [ "$DISK_SETS" = "disk" ]; then
- install_disk single_disk;
- ASK="always"
- else
- touch $TMP/tagfile
- chmod 600 $TMP/tagfile
- if echo $DISK_SETS | grep "#a#" 1> /dev/null 2>&1; then
- A_IS_NEEDED="true"
- else
- A_IS_NEEDED="false"
- fi
- while [ 0 ];
- do
- while [ 0 ]; # strip leading '#'s
- do
- if [ "`echo $DISK_SETS | cut -b1`" = "#" ]; then
- DISK_SETS="`echo $DISK_SETS | cut -b2-`"
- else
- break;
- fi
- done
- if [ "$A_IS_NEEDED" = "true" ]; then
- cat << EOF > $TMP/tmpmsg
-
- --- Installing package series ==>a<==
-
- EOF
- dialog --infobox "`cat $TMP/tmpmsg`" 5 45
- sleep 1
- rm -f $TMP/tmpmsg
- install_disk_set a;
- A_IS_NEEDED="false"
- fi
- count="1"
- if [ "`echo $DISK_SETS | cut -b$count`" = "" ]; then
- break; # we be done here :^)
- else
- count="2"
- while [ 0 ]; do
- if [ "`echo $DISK_SETS | cut -b$count`" = "" -o "`echo $DISK_SETS | cut -b$count`" = "#" ]; then
- count="`expr $count - 1`"
- break;
- else
- count="`expr $count + 1`"
- fi
- done
- fi
- diskset="`echo $DISK_SETS | cut -b1-$count`"
- count="`expr $count + 1`"
- DISK_SETS="`echo $DISK_SETS | cut -b$count-`"
- if [ "$diskset" = "a" ]; then
- continue; # we expect this to be done elsewhere
- fi
- cat << EOF > $TMP/tmpmsg
-
- Installing package series ==>$diskset<==
-
- EOF
- dialog --infobox "`cat $TMP/tmpmsg`" 5 45
- sleep 1
- rm -f $TMP/tmpmsg
- install_disk_set $diskset;
- done
- fi
-
- if [ "$DISK_SETS" = "disk" -o "$CMD_START" = "true" ]; then
- if [ -r $TMP/tagfile ]; then
- rm $TMP/tagfile
- fi
- dialog --clear
- fi
- chmod 755 $TARGET_DIR $TARGET_DIR/var $TARGET_DIR/usr
- chmod 1777 $TARGET_DIR/tmp
-